// 评分单位常量，避免重复定义
const RATING_UNITS = "Reviews|ratings|Rezensionen|Commentaires|Opiniones|レビュー|المراجعات";

export function extractNumberRatings(doc: Document): string {
  // 1. 主方案：查找ID为"acrCustomerReviewText"的span元素（对应Python的find('span', id='xxx')）
  const ratingCountElement = doc.getElementById("acrCustomerReviewText");
  if (ratingCountElement) {
    const ratingText = ratingCountElement.textContent?.trim() || "";
    if (ratingText) {
      return ratingText;
    }
  }

  // 2. 备用方案：通过aria-label属性匹配（对应Python的find+正则筛选）
  // 先获取所有span元素，再筛选符合aria-label规则的元素
  const allSpanElements = doc.getElementsByTagName("span");
  const ariaLabelReg = new RegExp(`\\d+[,. ]*\\d*\\s*(${RATING_UNITS})`, "i"); // 匹配包含数字和评分单位的aria-label
  let targetAriaElement: HTMLSpanElement | null = null;

  for (let i = 0; i < allSpanElements.length; i++) {
    const ariaLabel = allSpanElements[i].getAttribute("aria-label");
    if (ariaLabel && ariaLabelReg.test(ariaLabel)) {
      targetAriaElement = allSpanElements[i];
      break;
    }
  }

  if (targetAriaElement) {
    const ariaText = targetAriaElement.getAttribute("aria-label")?.replace(/\s|\u00A0/g, '') || "";
    // 提取数字部分和单位（对应Python的re.search）
    const matchReg = new RegExp(`(\\d[,.\\d]*)\\s*(${RATING_UNITS})`, "i");
    const matchResult = ariaText.match(matchReg);

    if (matchResult) {
      const number = matchResult[1]; // 数字部分，如"65,257"
      const unit = matchResult[2].toLowerCase(); // 单位转为小写，如"ratings"
      const formattedText = `${number} ${unit}`;
      return formattedText;
    }
  }

  console.debug("未找到评分数量相关元素");
  return ""; // 默认返回空字符串
}
